Distributed game services

ABSTRACT

In some implementations, a local gaming machine is in communication with a remote gaming machine over a data network. A player input requesting a game application is received at the local gaming machine. The requested game application may be located at the remote gamine machine. It is determined whether the requested game application is available for execution on the remote gaming machine. In some instances, determining availability of the requested game application includes determining compliance with interface specifications, licensing specifications and/or jurisdictional specifications. When the requested game application is available for execution, an instance of the requested game application is reserved on the remote gaming machine. When the instance is executed on the remote gaming machine, output data is sent to the local gaming machine over the data network. In some instances, one or more game parameters can be captured from the received output data.

PRIORITY AND RELATED APPLICATION DATA

This application is a continuation of and claims priority to co-pendingand commonly assigned U.S. patent application Ser. No. 11/225,337, filedSep. 12, 2005 and entitled “DISTRIBUTED GAME SERVICES,” which is herebyincorporated by reference.

BACKGROUND OF THE INVENTION

The present disclosure relates to gaming machines and networks and, moreparticularly, to games-on-demand systems.

Gaming in the United States is divided into Class I, Class II and ClassIII games. Class I gaming includes social games played for minimalprizes, or traditional ceremonial games. Class II gaming includes bingogames, pull tab games if played in the same location as bingo games,lotto, punch boards, tip jars, instant bingo, and other games similar tobingo. Class III gaming includes any game that is not a Class I or ClassII game, such as a game of chance typically offered in non-Indian,state-regulated casinos. Many games of chance that are played on gamingmachines fall into the Class II and Class III categories of games.

Various games, particularly the Class II and Class III categories ofgames, can be implemented as server-based games in a server-clientsystem. Server-based games are generally those in which the games andcapabilities of a gaming terminal depend on a central server. Theterminal may download games from the central server or may rely on thecentral server to run the games.

Game applications are becoming more sophisticated and, hence, larger insize, to use the expanding capabilities of central servers and gamingterminals. In addition, the number of different game applicationsavailable for play is always increasing, as game developers attempt tokeep players interested in visiting casinos to play new and excitinggames. As a result, there are so many various game applications inexistence; it has become impractical to store all of these games on asingle gaming terminal. Thus, server-based games have been implementedin many casinos and hotels. In this way, a multitude of gameapplications can be stored at a central server, and played remotely ordownloaded to individual gaming terminals in the gaming network.

In a games-on-demand system, a player can operate a gaming terminal torequest a particular game for playing. In a server-client game downloadconfiguration, a requested game is downloaded from the central server tothe gaming terminal, and then executed on the gaming terminal. In aserver-based configuration, on the other hand, the requested game isexecuted on the server, and the player interacts with the server to playthe game. For example, U.S. Pat. No. 5,779,549, “Database Driven OnlineDistributed Tournament System,” U.S. Pat. No. 6,001,016, “Remote GamingDevice,” and U.S. Pat. No. 6,409,602, “Slim Terminal Gaming System”describe server-based configurations where minimal or no processingoccurs on the gaming machine. In these conventional systems, the game isexecuted on the central server, and outcome data are sent to the gamingmachine for output to the player. The gaming machine operates as an IOdevice for a player to interact remotely with the game executed on thecentral server. The game play, meter tracking, and other game functionsare carried out on the central server.

In implementing a games-on-demand system, both the downloadconfiguration and the server-based configuration described above havetheir respective drawbacks. In a download configuration, the gamingterminal is susceptible to long delays while a requested game isretrieved and downloaded from the central server, and thenauthenticated, before game play can begin. These delays are oftenattributable to the large and ever increasing size of game applications,as explained above. In addition, downloading of games on-demand isbandwidth intensive, computationally complex and intensive, and notsecure when games are in transit. In a server-based configuration, adrawback is that the operability of the gaming terminals is entirelynetwork-dependent. When the central server malfunctions, or othernetwork problems arise, interfering with the connection between thegaming terminals and the central server, all of the gaming terminals areaffected. Game play can be hindered on the gaming terminals due to theirdependence on the central server to execute the game.

Thus, it is desirable to provide a gaming system which eliminates boththe delay and other problems associated with download configurations,and the network-dependence associated with server-based configurations.

SUMMARY OF THE INVENTION

Disclosed are methods, apparatus, and systems, including computerprogram products, implementing and using techniques for providing a gameof chance.

In one aspect of the present invention, at a local gaming machine incommunication with a remote gaming machine over a data network, a playerinput is received at an input terminal. The player input requests a gameapplication. A location of the requested game application is determinedas being at the remote gaming machine. Interface requirements of therequested game application are identified. It is determined whether theidentified interface requirements are compatible with the interface ofthe local gaming machine. It is also determined whether the requestedgame application is available for execution on the remote gamingmachine. When it is determined that the interface requirements arecompatible and that the requested game application is available forexecution, an instance of the requested game application is reserved onthe remote gaming machine.

In one implementation, responsive to execution of the instance of therequested game application on the remote gaming machine, output data ofthe executed game application is received from the remote gaming machineover the data network. This received output data can be stored in memoryand/or can be provided on an interface of the local gaming machine.Generic output data components can be received from a storage medium andprovided on the interface. One or more game parameters can be capturedfrom the received output data. In some implementations, determiningwhether the requested game application is available for execution on theremote gaming machine includes determining compliance of the requestedgame application with interface requirements, licensing requirementsand/or jurisdictional requirements.

According to another aspect to the present invention, at a remote gamingmachine, a game of chance is provided to a local gaming machine incommunication with the remote gaming machine over a data network. A gameapplication request message is received from the local gaming machineover the data network. The request message requests a game application.Interface requirements of the requested game application are provided.It is determined whether the requested game application is available forexecution on the remote gaming machine. An instance of the requestedgame application is reserved on the remote gaming machine when it isdetermined that the requested game application is available forexecution.

In some implementations, the instance of the requested game applicationis executed on the processor of the remote gaming machine. Output dataof the executing game application is sent from the remote gaming machineto the local gaming machine over the data network. Authenticationinformation can be provided in frames of the output data, for instance,as a digital signature embedded in the frame.

According to another aspect of the present invention, a local gamingmachine provides a game of chance from a remote gaming machine incommunication with the local gaming machine over a data network. Thegaming machine includes a user interface coupled to receive a playerinput. The player input requests a game application. A gaming controllerincluding a processor is configured to: (1) determine a location of therequested game application as being at the remote gaming machine, (2)identify interface requirements of the requested game application, (3)determine whether the identified interface requirements are compatiblewith an interface of the local gaming machine, (4) determine whether therequested game application is available for execution on the remotegaming machine, and (5) reserve an instance of the requested gameapplication on the remote gaming machine when it is determined that theinterface requirements are compatible and that the requested gameapplication is available for execution.

According to another aspect of the present invention, a remote gamingmachine provides a game of chance to a local gaming machine incommunication with the remote gaming machine over a data network. Theremote gaming machine includes a communications interface coupled toreceive a game application request message from the local gaming machineover the data network. The request message requests a game application.A gaming controller including a processor is configured to: (1) provideinterface requirements of the requested game application, (2) determinewhether the requested game application is available for execution on theremote gaming machine, (3) reserve an instance of the requested gameapplication on the remote gaming machine when it is determined that therequested game application is available for execution, and (5) executethe instance of the requested game application. The remote gamingmachine further includes a streaming module coupled to send output dataof the executing game application from the remote gaming machine to thelocal gaming machine over the data network.

All of the foregoing methods, along with other methods of aspects of thepresent invention, may be implemented in software, firmware, hardwareand combinations thereof. For example, the methods of aspects of thepresent invention may be implemented by computer programs embodied inmachine-readable media and other products.

Aspects of the invention may be implemented by networked gamingmachines, game servers and other such devices. These and other featuresand benefits of aspects of the invention will be described in moredetail below with reference to the associated drawings.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 shows a block diagram of a peer-to-peer gaming system 100 forproviding remote gaming, constructed according to one embodiment of thepresent invention.

FIG. 2 shows a block diagram of a peer-to-peer gaming system 200 forproviding remote gaming, constructed according to one embodiment of thepresent invention.

FIG. 3 shows a block diagram of a peer-to-peer gaming system 300 forproviding remote gaming, constructed according to one embodiment of thepresent invention.

FIG. 4 shows a diagram of a storage medium in a peer-to-peer gamingsystem 300 for providing remote gaming, constructed according to oneembodiment of the present invention.

FIG. 5 shows a diagram of a storage medium in a peer-to-peer gamingsystem having video and audio content, arranged according one embodimentof the present invention.

FIG. 6 shows a block diagram of a local gaming machine apparatus,constructed according to one embodiment of the present invention.

FIG. 7 shows a block diagram of a remote gaming machine apparatus,constructed according to one embodiment of the present invention.

FIGS. 8A and 8B show a flow diagram of a method 800 of remote gaming forproviding a game of chance, performed in accordance with one embodimentof the present invention.

FIG. 9 shows a location record constructed according to one embodimentof the present invention.

FIG. 10 shows an interface record 310 constructed according to oneembodiment of the present invention.

FIG. 11 shows a routing table 215 constructed according to oneembodiment of the present invention.

FIG. 12 shows a flow diagram of a method 830 for determining whether arequested game application is available for execution on a remote gamingmachine, performed in accordance with one embodiment of the presentinvention.

FIG. 13 shows a status message 1300 sent by a remote gaming machine, inaccordance with one embodiment of the present invention.

FIG. 14 shows a menu 1400 generated and displayed on a user interface ofthe local gaming machine, in accordance with one embodiment of thepresent invention.

FIG. 15 shows menu 1400 generated and displayed on a user interface ofthe local gaming machine, in accordance with another embodiment of thepresent invention.

FIG. 16 is a block diagram of a number of gaming machines in a gamingnetwork that may be configured to implement some methods of the presentinvention.

FIG. 17 illustrates an exemplary gaming machine that may be configuredto implement some methods of the present invention.

FIG. 18 is a block diagram of an exemplary network device that may beconfigured as a game server to implement some methods of the presentinvention.

FIG. 19 shows an interaction diagram of a method of remote gaming forproviding a game of chance, performed in accordance with one embodimentof the present invention.

FIG. 20 shows a method 2000 of remote gaming for providing a game ofchance, including a scheme for responding to network failures, inaccordance with one embodiment of the present invention.

FIG. 21 shows a method of addressing game history disputes at a gamingmachine, performed in accordance with one embodiment of the presentinvention.

DETAILED DESCRIPTION OF THE EMBODIMENTS

Reference will now be made in detail to some specific embodiments of theinvention including the best modes contemplated by the inventors forcarrying out the invention. Examples of these specific embodiments areillustrated in the accompanying drawings. While the invention isdescribed in conjunction with these specific embodiments, it will beunderstood that it is not intended to limit the invention to thedescribed embodiments. On the contrary, it is intended to coveralternatives, modifications, and equivalents as may be included withinthe spirit and scope of the invention as defined by the appended claims.Moreover, numerous specific details are set forth below in order toprovide a thorough understanding of the present invention. The presentinvention may be practiced without some or all of these specificdetails. In other instances, well known process operations have not beendescribed in detail in order not to obscure the present invention.

Implementations of the present invention provide games-on-demandmethods, 15 apparatus, and systems for playing games of chance in apeer-to-peer gaming machine configuration. Game application executables,also referred to herein as games and game codes, are stored redundantlyamong the gaming machines to define a distributed game network. Gamingmachines can be implemented in various forms, including the gamingmachines shown and described with reference to FIGS. 16 and 20 17. Inother mobile gaming implementations, part of the gaming machinefunctions are implemented in a portable handheld device such as apersonal digital assistant (“PDA”) or a cell phone. Otherimplementations of the gaming machine functionality include dataprocessing devices such as a personal computer (“PC”) or iTV internetenabled televisions.

When a player situated at one of the gaming machines requests a game notstored locally, the game can be executed remotely at one of the othergaming machines in the peer-to-peer network. As will be appreciated bythose skilled in the art, an executable game application generallyoperates on a set of input data to produce output data. Output data ofthe executing game application, for example, video and audio streams,are routed to the local gaming machine where the player is situated. Theplayer can then interact with the remote gaming machine for remote gameplay. The effect of instant-on game play is achieved at any of thegaming machines where a player wishes to play games.

Applying principles of the present invention, the delay associated withgame download is eliminated because the entire game executable does nothave be downloaded, unpacked, decrypted and then authenticated. Instead,the game application is executed at the origin, in its native mode, andthe results piped to the requesting gaming machine. Computationalresources are conserved. Security is improved, in that it is difficultfor a hacker to intercept frames of the streamed output data from one ofthe remote gaming machines, alter the data frame-by-frame, and providethe output data to the local gaming machine without noticeable delay.Redundant storage substantially reduces or eliminates the problem ofnetwork errors, as the game can be executed on another remote gamingmachine with which the local gaming machine has establishedcommunications. The need for a central server is minimized oreliminated, as the games and other relevant data are distributed amongthe various gaming machines in the peer-to-peer network. Reliabilityincreases as a point of possible failure (the central server) iseliminated.

FIG. 1 shows a gaming system 100 constructed according to one embodimentof the present invention. In FIG. 1, system 100 includes gaming machines105 a, 105 b, 105 c and 105 d in communication with one another over asuitable data network 110. In gaming system 100, the gaming machines 105a-105 d are configured in a peer-to-peer network arrangement.Peer-to-peer gaming machine networks are described in commonly assignedand co-pending U.S. patent application Ser. No. 09/595,798, entitled“Using a Gaming Machine as a Server,” filed Jun. 16, 2000, and U.S.patent application Ser. No. 11/078,966, entitled “Secured VirtualNetwork in a Gaming Environment,” filed Mar. 10, 2005, both of which arehereby incorporated by reference. In such peer-to-peer arrangements,including gaming system 100, each gaming machine can send and receivedata to and from other gaming machines in system 100. Thus, in contrastwith central determination and other server-based arrangements, gamingsystem 100 does not require a central server to serve the various gamingmachines 105 a-105 d in the system 100.

In FIG. 1, data network 110 can be implemented as desired, for instance,as a local area network “LAN”, a wide area network “WAN” such as theInternet, and various combinations thereof. Other suitablecommunications networks can be used to define data network 110 withinthe spirit and scope of the invention, including the data networksdescribed below with respect to FIGS. 16-18. Exemplary gaming machines105 a-105 d are constructed using combinations of hardware and software,described below with respect to FIGS. 16-18.

FIG. 2 shows a peer-to-peer gaming system 200 constructed according toanother embodiment of the present invention. In system 200, gamingmachines 105 a-105 d are in communication with one another over datanetwork 110 in a peer-to-peer arrangement, as described above withrespect to FIG. 1. In addition, in FIG. 2, each gaming machine 105 a-105d has a respective storage medium 205 a-205 d coupled as shown in FIG.2. Each storage medium can be implemented in various ways, as will beunderstood by those skilled in the art. In one implementation, storagemedium 205 a is implemented as a database situated external to gamingmachine 105 a and in communication with gaming machine 105 a over asuitable communications link. In another implementation, storage medium205 a is implemented as a memory device situated within gaming machine105 a. These and other implementations are intended to be within thespirit and scope of the present invention.

Implementations of gaming methods and systems described herein provideefficient and enjoyable game play for players of the games. In additionto the features described herein, games are executed and played withimplementations of the present invention in accordance with techniquesdescribed in commonly assigned and co-pending U.S. patent applicationSer. No. 10/931,673, entitled “Multi-Player Bingo Game with Real-TimeGame-Winning Pattern Determination,” filed Sep. 1, 2004.

In FIG. 2, each storage medium 205 a-205 d can store one or more gameapplications to be retrieved and executed. In one implementation, asshown in system 200, there are four game applications available in thegaming system 200, designated “Game App 1,” “Game App 2,” “Game App 3,”and “Game App 4.” For example, Game App 1 is blackjack, Game App 2 isPoker, and Game Apps 3 and 4 are other games of chance. Using the noveldistribution techniques described herein, or other techniques such asBitTorrent, a software program available from BitTorrent, Inc. ofBellevue, Wash., one or more copies of a particular game application aredistributed among gaming machines 105 a-105 d in system 200. Forinstance, in system 200, a copy of Game App 1 is stored in storagemedium 205 a, and a further copy of the same Game App 1 is stored instorage medium 205 c at gaming machine 105 c. As shown, Game App 2 isstored in both storage mediums 205 b and 205 c. Game App 3 is stored instorage medium 205 d, and copies of Game App 4 are stored in storagemediums 205 c and 205 d. The purpose and use of the multiple copies ofthe same game application is described herein. Generally, providingmultiple copies of a particular game application enables the executionof multiple instances of that game application throughout the system200. Multiple instances of game applications at a single machine, andmultiple instances of game applications at multiple machines, can beplayed.

In FIG. 2, in one embodiment, each gaming machine 105 a-105 d has arespective location record 210 a-210 d. Each location record 210 a-210 dgenerally shows the location of the various copies of the gameapplications throughout system 200. Each location record 210 a-210 d caninclude additional information regarding the status of the various gameapplications, and can be updated using several techniques, depending onthe desired implementation. For example, in one implementation, locationrecords are updated by performing a network “crawl” operation similar tothe processing of Internet search engines such as Google™. That is,periodically, the gaming machines in system 200 are queried to identifywhich game applications are situated at those machines and, in someembodiments, how many instances of those applications can be executedsimultaneously at each machine. In another embodiment, each gamingmachine 105 a-105 d broadcasts messages to the other machines in thesystem 200 indicating the game applications situated at that machineand, in some implementations, a number of available instances of thoseapplications. Embodiments of the location records 210 a-210 d and usageof those records 210 a-210 d are further described below.

In FIG. 2, each gaming machine also includes a respective routing table215 a-215 d. Each routing table is used by the respective gaming machineto locate other gaming machines in the peer-to-peer system 200. In oneembodiment, the routing table provides a listing of a sequence of thegaming machines, defining an order in which the listed machines are tobe accessed by the gaming machine associated with the routing table. Inone embodiment, the routing table is defined according to the networkdistance from the gaming machine associated with the routing table tothe other gaming machines in the network. As described herein, therouting table can be used independently or in conjunction with alocation record to locate game applications at various gaming machinesin system 200. Routing tables 215 a-215 d can be implemented in severalways, as described herein. The information included in a routing table,and the usage of the routing table is described in greater detail below.

As will be appreciated by those skilled in the art, location records 210a-210 d, and routing tables 215 a-215 d can be stored in various memorydevices in system 200. In one implementation, each pair of locationrecord and routing table is stored in memory within the respectivegaming machine. In other implementation, each location record androuting table pair is stored in a storage medium situated external tothe gaming machine, such as storage medium 205 a. In thisimplementation, different banks of memory addresses are preferably usedto distinguish the location records, routing tables and gameapplications. In another implementation, the location records androuting tables can be stored at a central data repository coupled aspart of system 200, for instance, at a central server. Otherimplementations are intended to be within the spirit and the scope ofthe present invention.

FIG. 3 shows a gaming system 300 constructed according to anotherembodiment of the present invention. In FIG. 3, a video and audio router305 is interposed between the various gaming machines 105 a-105 d in thesystem. The video and audio router 305 can be implemented with variouscombinations of software and hardware, as will be appreciated by theskilled artisan. Generally, the video and audio router 305 handles therouting of output data, including video and audio content, betweengaming machines 105 a-105 d in the system 300. That is, when it isdetermined that one of the gaming machines 105 a-105 d is to deliversuch multimedia data to another one of the gaming machines 105 a-105 d,the sending or remote gaming machine can stream rendered output audio orvideo data to the video and audio router 305 for delivery to therequesting or local gaming machine. Such video and audio content can bestored in any suitable storage medium, including storage mediums 205a-205 d with other data described above with respect to FIG. 2.

In FIG. 3, in the system 300, rather than provide a particular locationrecord at each gaming machine 105 a-105 d, a single location record 210is stored at a suitable storage medium coupled to video and audio router305, or at another suitable storage medium in such a central location.In this embodiment, location record 210 serves as a “master” locationrecord, containing all of the information of location records 210 a-210d of system 200. Thus, each gaming machine 105 a-105 d accesses thesingle location record 210 to determine the location of gameapplications and possibly other information regarding those gameapplications in system 300.

In FIG. 3, system 300 further includes an interface record 310 alsostored, in this embodiment, at a central location such as video andaudio router 305. In one embodiment, the interface record 310 definesinterface requirements of the particular gaming machines 105 a-105 d, aswell as interface requirements of particular game applicationsdistributed throughout system 300. Examples of interface elements for agaming machine include hardware of the gaming machine and the softwarefor interacting with and processing output data of the executing gameapplication. Interface elements are described herein, particularly withrespect to FIGS. 16-18 below. For example, hardware interfacerequirements can include resolution and other essentials of a displaymonitor, lights for required visual effects, audio processing and outputneeds, information panels, a designation of input devices forinteracting with the game such as buttons and switches, and internalhardware requirements such as CPU speed, memory storage capacity, andother specifications. The requirements of these interface elements for agame, as well as the capabilities of a particular gaming machine, can beprovided in the interface record. In this way, as described in greaterdetail below, the interface record can be used to check thecompatibility of game applications with gaming machines to ensure thatinterface requirements are consistent.

In FIG. 3, video and audio router 305, location record 210 and interfacerecord 310 can be implemented in various configurations. In oneimplementation, the video and audio router 305 is implemented as part ofa central server in the gaming system 300. In another embodiment, thevideo and audio router 305 is a separate stand-alone device coupled indata network 110 in a suitable manner such that the gaming machines 105a-105 d can send output data to one another through video and audiorouter 305. In one implementation, the central server in which video andaudio router 305 is implemented also provides for the sending ofcommunications such as request messages and control data between gamingmachines in the system 300.

FIG. 4 shows a storage medium 205 a of FIG. 2, constructed according toone embodiment of the present invention. In this embodiment, eachstorage medium 205 a-205 d contains respective records and otherinformation for use by the associated gaming machine. For instance, inFIG. 4, storage medium 205 a, in communication with gaming machine 105a, includes video and audio content components used by game applicationssituated locally at gaming machine 105 a, such as Game App 1. In thisembodiment, storage medium 205 a further includes an interface record310 a, which defines interface requirements of gaming machine 105 a andrequirements of game applications stored at gaming machine 105 a, suchas Game App 1. In addition, storage medium 205 a, in this embodiment,includes location record 210 a, described herein, and routing table 215a, also described herein. In FIG. 4, those skilled in the art willappreciate that the storage of the various data in storage medium 205 a,as shown in FIG. 4, is but only one implementation for storage of suchinformation in gaming systems constructed according to embodiments ofthe present invention. Such data can be stored in other memory devicesand other locations in the gaming systems.

FIG. 5 shows the video and audio content 405 within storage medium 205d, arranged according to one embodiment of the present invention. Instorage medium 205 d, output data 505 associated with Game App 3 isstored in files within a directory structure, as shown. Similarly,output data 510 is stored and associated with Game App 4. The outputdata 505 and 510 include multimedia components, including video andaudio components as shown. In one embodiment, the video componentsinclude MPEG (“.mpeg”) files, preferably in the MPEG4 format. Also, theoutput data 505 and 510 include audio .wav files, as shown. Additionaldata can be stored and associated with any of the game applications,including a paytable (“paytable4.dat”) for Game App 4. The paytable4.datfile is a data resource defining one or more pay tables for Game App 4.In FIG. 5, while the multimedia components 505 and 510 of output dataare shown as arranged in a directory structure, those skilled in the artshould appreciate that other arrangements of such output data arecontemplated within the spirit and scope of the present invention.

In FIG. 5, one benefit of the storage and the arrangement of videocontent for each respective game application is that the same dataresources can be used when multiple instances of the particular gameapplication are executed. That is, some of the same .mpeg video files,.wav audio files and other data files can be retrieved and used by morethan one instance of the executing game application. This re-use ofinformation minimizes the storage requirements that would otherwise benecessary for executing multiple instances of the same game application.

In FIG. 5, in one embodiment, as shown, the video and audio contentfiles 505 and 510 are pre-rendered; that is, the outcome presentation isgenerated before the game is requested. In this way, the file can bequickly retrieved and played on a suitable multimedia player provided inthe gaming machine. The output data can be streamed to a requestinggaming machine in the system over data network 110 for output on a userinterface, such as a monitor or speaker, of the requesting gamingmachine. Because the same video and audio content files 505 and 510 areused for multiple instances of the game applications, the same bitmap ofan outcome, for example, can be retrieved and output in multiple sets ofstreamed data, all originating from the single storage medium 205 d. Insome embodiments, choices for pre-rendered outcomes are purposelylimited so that player selection of wager amounts, paylines, etc. can bematched to available pre-rendered outcomes. In other embodiments,outcomes are generated on-demand, particularly in jurisdictionsprohibiting the use of pre-rendered outcomes.

In FIG. 1, any one of the gaming machines 105 a-105 d can request theexecution of the game application situated on any of the other gamingmachines 105 a-105 d in the system 100. When a gaming machine 105 amakes such a request, that gaming machine is referred to herein as a“local” gaming machine. The local gaming machine is the gaming machinewith which the player interacts to play a game application situated onthat local gaming machine or situated on a different one of the gamingmachines 105 b-105 d. A gaming machine on which the game application isexecuted, but not at which the player is located, is referred to hereinas a “remote” gaming machine. Because the systems described herein arehybrids of peer-to-peer systems, in one embodiment, each gaming machine105 a-105 d in the system includes suitable apparatus and methods forserving as both a local gaming machine and a remote gaming machine. Inanother embodiment, one or more gaming machines in the network arestrictly local gaming machines, while others are strictly remote. Forexample, one or more local gaming machines can be situated on a casinofloor or otherwise accessible to a player, while a remote gaming machineor server providing the functions of a remote gaming machine is situatedin a back room or other location not accessible to players.

In FIG. 6, the apparatus 600 of a local gaming machine is shown. Thelocal gaming machine 600 includes a processor 605 which can beimplemented as part of a master gaming controller, described below. Thisprocessor 605 executes certain code using various data, including datastored in a cache memory 610 and parameters stored in a nonvolatilememory 615. In one implementation, cache memory 610 and nonvolatilememory 615 are parts of a single memory device. In another embodiment,the cache memory 610 is separate from nonvolatile memory 615, as shownin FIG. 6.

In FIG. 6, a control module sends control data to the remote gamingmachine on which the game application is played so that the player oflocal gaming machine 600 can interact with the game applicationexecuting on the remote gaming machine. Therefore, control module 620 iscoupled to a player interface of the gaming machine with a suitableinput terminal or other controls to receive player input for playing thegame, as described below. In one embodiment, as shown, player input,also referred to herein as interaction data, is sent to the remotegaming machine over a control channel of data network 110.

In FIG. 6, a receiving module 625 receives the streamed output data fromthe remote gaming machine on which the requested game application isbeing executed. In one embodiment, receiving module 625 includes anMPEG4 decoder to decode the streamed MPEG files from the streamingchannel of data network 110. A data capture module 630 is provided toreceive the decoded data from receiving module 625 and perform screen orframe captures, in some implementations, to gather parameters from thereceived output data for storage in nonvolatile memory 615.

As shown in FIG. 6, memory 615 includes several banks 615 a-615 f inwhich the respective parameters are stored. In one implementation, theseparameters include credit meter 615 c, bit meter 615 d, bit history 615e, outcome history 615 f and other settings 615 a and 615 b for theparticular game to be played.

One benefit of storing the parameters of the game application at thelocal gaming machine, even though the game application is being executedon another remote gaming machine, is to provide an audit trail for thegame that can be accessed at the particular local gaming machine onwhich the player plays the game. In one embodiment, these sameparameters 615 a-f are also stored at the remote gaming machine on whichthe game application is being executed. Those skilled in the art willappreciate that additional blocks of memory in nonvolatile memory 615can be allocated to maintain settings and other parameters for variousplayers and for various game applications.

In another embodiment, the parameters in memory 615 are stored at acentral server in addition to or as an alternative to the storage ofparameters at the remote gaming machine. In one implementation, thiscentral server has a verification check mode that can be invoked asdesired, for instance, for jackpots exceeding a certain amount. In thevarious parameter storage schemes described herein, the parameters canlater be reconciled to provide an audit trail for game play on themachines.

In FIG. 6, often the receiving module 625 of local gaming machine 600will receive other data in addition to the audio and video content beingstreamed from the executing game application. For example, in someimplementations, this data includes a machine ID identifying the remotegaming machine which sent the particular output data, a time stampdesignating a time or times at which the output data was sent, andpossibly other information, as desired for the particularimplementation. This additional data can be sent, in a sub-channel ofthe video stream, as a component of the output data, or separate fromthe output data, depending on the desired implementation. The additionaldata can also be stored in banks of nonvolatile memory 615, as desiredfor the particular implementation.

FIG. 7 shows the apparatus 700 of a gaming machine operating as a remotegaming machine in any of the gaming systems described herein. In FIG. 7,the remote gaming machine apparatus includes a processor 705 whichhandles the execution of the various game applications, includingmultiple instances of those game applications. When an instance of agame application is executed, the game application is loaded into afirst memory 710 and executed by processor 705. In one embodiment, asshown in FIG. 2, the game application is retrieved from an externalstorage medium, for example, one of storage mediums 205 a-205 d, andloaded into memory 710 for execution. Embodiments of the presentinvention provide for the execution of multiple instances of the samegame application by remote gaming machine 700. For instance, in FIG. 7,first memory 710 shows the execution of three instances of the samegaming application, Game App 1. Those skilled in the art will appreciatethat conventional multitasking methods are implemented to provide theexecution of multiple applications, within the processing and memoryconstraints of the remote gaming machine 700.

In FIG. 7, as those instances of Game App 1 are executed, processor 705interacts with a streaming module 715 to send output data of thoseexecuting instances of game applications, for example, includingoutcomes of the Game App 1 instances, for streaming over data network110. As described above with respect to FIGS. 4 and 5, the same videoand audio content can be used for multiple instances of the same gameapplication. Thus, in one embodiment described with respect to FIG. 7,each instance of Game App 1 will use some of the same audio and videocomponent files, often pre-rendered, for streaming output data to otherrequesting gaming machines in the system. In some implementations, thechoice of audio and video component files for pre-rendering depends onthe usage of those components. That is, the most frequently usedcomponents or combinations of components are pre-rendered to make thesystem more efficient. In this implementation, record-keeping isprovided to track the usage of game applications and/or the componentsoutput as those game applications are executed.

In one embodiment, the selection of pre-rendered output data componentsis dependent upon player input. For instance, as will be appreciated bythose skilled in the art, often the player can interact with a gamingmachine to input game parameter selections such as wager amounts, numberof pay lines, maximum bet amount, and other configuration data for gameplay. In accordance with one method, pre-rendered output data componentsare appropriate for certain of these inputs, but not for others. In thismethod, pre-rendered components that most closely match the inputtedselections are delivered to the gaming machine to be displayed. Also, insome implementations, the choices of game parameters offered to theplayer may be limited to selections that will be appropriate for thepre-rendered components.

As multiple instances of certain game applications are played, it isinevitable that certain game applications will not be played, forinstance, due to unpopularity of that game. In one embodiment, a methodis provided to delete those unused game application instances when somepredetermined criteria is satisfied. For instance, when no requests fora particular game application or instance of the game application arereceived for a predetermined length of time, or from a predeterminednumber of game requests, that game application is marked for deletion.In this embodiment, the method provides for tracking used and unusedgame applications by maintaining a “use” record which indicates whichgames have been played, such as a tally, or more detailed informationdescribing the number, date, time, and other information characterizinguse of that game application. In one embodiment, the use record isupdated each time a game application instance is executed.

In FIG. 7, the apparatus 700 also includes a suitable communicationsinterface 720 for interacting with the appropriate hardware and softwareof data network 110, any of the gaming machines 105 a-105 d inpeer-to-peer system 200, and/or video and audio router 305 of system300. In one embodiment, as shown, the communications interface 720includes several sets of channels for communicating with multiple gamingmachines in the peer-to-peer system. Thus, multiple gaming machines canbe interacting with remote gaming machine 700 to play instances of thesame game application and other game applications. In one embodiment, asshown in FIG. 7, the communications interface 720 includes pairs ofstreaming channels 725 a-c and control channels 730 a-c. The output datafrom streaming module 715 is sent to a particular gaming machine overthe data network and/or video and audio router 305 over one of thestreaming channels 725 a-725 c. Control data, as described herein, forinteracting with an instance of an executing game application, isreceived from any of the various gaming machines through data network110 and/or video and audio router 305 over one of the control channels730 a-730 c.

In FIG. 7, in one embodiment, a second memory 735 stores the parametersof the executing instances of game applications, to later be reconciledwith parameters stored in the local gaming machines receiving outputdata from those executing game applications, as described above withrespect to FIG. 6. Those skilled in the art will appreciate that thefirst and second memories 710 and 735 can be implemented in a singlememory device internal or external with respect to remote gaming machineapparatus 700.

Implementations of the present invention provide for auditing and gamehistory dispute resolution by storing captured parameters in memory 615of the local gaming machine 600 and/or memory 735 of the remote gamingmachine 700. Several methods of dispute resolution can be performed inaccordance with embodiments of the present invention. In one embodiment,at the remote gaming machine, parameters are stored or otherwisecaptured from frames using techniques described herein and stored inmemory 735, when sent to the local gaming machine. As the output data isreceived at the local gaming machine, parameters are captured from thereceived frames and stored in outcome history 615 f of memory 615. Theframes are output to the display. When a dispute arises, the parametersstored in memory 735 are compared with those in memory 615. In anotherembodiment, parameters are provided separate from the frames, but aresimilarly stored at the remote gaming machine when sent, and also thenstored at the local gaming machine when received. The two sets of storedparameters are again compared in a dispute. In yet another embodiment,parameters are only captured at the remote gaming machine. When adispute arises, the parameters at the remote gaming machine govern theoutcome. In yet another embodiment, parameters are only captured at thelocal gaming machine. When a dispute arises, the parameters at the localgaming machine govern.

FIGS. 8A and 8B show a flow diagram of a method 800 of remote gaming forproviding a game of chance, performed in accordance with one embodimentof the present invention. The method 800 begins in step 805 wherein amenu of game applications is displayed on the user interface of one ofthe gaming machines in a gaming system. Examples of such menusconstructed in accordance with embodiments of the present invention aredescribed below. Using such menus, a player can view game applicationsavailable to be played on the local and remote gaming machines in thesystem. The menu can be updated using techniques described below so thatcertain game applications available to be played are shown, and othersare not shown. In addition, in one embodiment, one or more of thedisplayed menus provide the player with game parameter settings whichthe player can select for the requested game. The requested gameapplication can be configured according to the selected parameters. Thegame parameters can include such information as paylines, wager amounts,and a jackpot. For example, in a slot game, the player can be requiredto specify wagers and paylines. Such selections can be presented in apull-down menu on the display for the player to select, or on buttons onthe machine in real time when the game is generated and played.

In FIG. 8A, in step 810, a player accesses the menu and interacts withthe local gaming machine to select one of the displayed gameapplications on the menu. Generally, such user input is received at aninput terminal or other device of the local gaming machine, as describedbelow. In addition, in implementations where game parameters can bespecified, the player provides configuration input setting theseparameters. In one embodiment, the configuration input is entered by theplayer. In another embodiment, the configuration input is read from aplayer tracking card, or retrieved from a server or other suitablestorage facility on the network.

In FIG. 8A, in step 815, responsive to receiving the player selectionrequesting one of the game applications, the processor 605 in localgaming machine 600 determines the location or locations of the requestedgame application. That is, the local gaming machine 600 determineswhether the requested game application is situated at the local gamingmachine and at any remote gaming machines in the system. To this end, instep 816, a location record 210, which can be situated at variouslocations in the gaming system, is accessed to determine whether therequested game application is located at the local gaming machine or, ifnot, what remote gaming machines have the application.

In step 816, according to one embodiment, a location record 210 as shownin FIG. 9 is implemented. The location record 210 identifies four gameapplications in region 905, and the corresponding locations of copies ofthose game applications in region 910. Those skilled in the art shouldappreciate that location record 210 can be tailored as desired for theparticular gaming system implementation. In one example, as shown inFIG. 9, there are four game applications which can be accessed from theparticular local gaming machine 600. In this example, gaming machine 105a is the local gaming machine, and gaming machine 105 b-105 d areconsidered remote gaming machines. As shown in FIG. 9, Game App 1 islocated at local gaming machine 105 a and at remote gaming machine 105c. Game App 2 is located at remote gaming machines 105 b and 105 c. GameApp 3 is located at remote gaming machine 105 d, and Game App 4 islocated at remote gaming machines 105 c and 105 d.

In FIG. 9, in one embodiment, the availability of instances of therespective game applications at the various gaming machines is alsoshown in region 910. The availability of instances of a particular gameapplication can be recorded in the location record 210 by integratingsuch information from a status message described below, in oneembodiment. The availability of instances of one or more gameapplications at a particular gaming machine can be governed by severalfactors, described below. By providing such information, in oneembodiment, rather than using a routing table, described below, a rulecan be implemented for processor 605 in local gaming machine to requestthe desired game application from the gaming machine having the mostinstances, or at the nearest network node, or having the least amount ofnetwork traffic, or other criteria. Other embodiments constructed inaccordance with the present invention provide different rules for theuse of location record 210.

Returning to step 816 in FIG. 8A, it is determined whether the requestedgame application is available at the local gaming machine and, if not,any remote gaming machines having copies of the requested gameapplication, using location record 210 of FIG. 9. Generally, when therequested game application is present at the local gaming machine, thelocal copy of the game application will be executed rather thanrequesting execution of the game application at remote gaming machinesin the network.

In FIG. 8A, when the requested game application is not at the localgaming machine, in step 817, a routing table is accessed to identify anappropriate one of the remote gaming machines having the requested gameapplication, as indicated by the location record. When a particularremote gaming machine is identified, the method 800 proceeds to step 820in which interface requirements of the requested game application areidentified. In step 825, the identified game application interfacerequirements are checked for compatibility with the interface of thelocal gaming machine. In steps 820 and 825, in one embodiment, aninterface record 310 can provide the necessary information and be usedto make the determination of step 825.

FIG. 10 shows an interface record 310 constructed according to oneembodiment of the present invention is shown. In interface record 310, afirst region 1005 lists the interface requirements of one or more gamingmachines in the network. In one implementation, an interface record 310is maintained by each gaming machine in the system. In thisimplementation, the gaming machine interface requirements in region 1005simply include one set of data defining the interface requirements forthat particular gaming machine. In another implementation, as shown inFIG. 10, an interface record 310 provides a central location forinterface requirements of all of the gaming machines in the system, aswell as the requirements of particular game applications. Thus, in FIG.10, in region 1005, a separate file or set of data defining theresources available of each gaming machine in the system is provided.For example, each set of interface requirements may define inputbuttons, display requirements, browsing interface, progressivecapability, CPU speed, memory available, hard disk space available, paylines, denominations, and other specifications as described herein foreach gaming machine in the system. In region 1010 of interface record310, individual files or sets of data are maintained for each gameapplication available in the gaming system. Each set of data defines theinterface requirements for that particular game application to beproperly output on any gaming machine for game play. Thus, as shown inFIG. 10, a separate set of data providing such requirements ismaintained for each game application. A particular set of data defininginterface requirements of a game application can include input buttonrequirements, pay line requirements, denominations, pay tablepercentages, bit levels, particular game display requirements, such aspoker games versus slot games, interface, progressive capability, CPUspeed, memory available, hard disk space available, and otherinformation. Essentially the game application interface requirements canbe defined to include any particular requirements of a gaming machinefor the application to be properly output, and any game requirementsspecific to that game for proper game play.

Returning to step 820 in FIG. 8A, the interface record 310 is used toidentify the particular interface requirements, in region 1010,associated with the requested game application such as Game App 1. Instep 825, then it is determined whether the identified interfacerequirements of Game App 1 are compatible with the interface andresources capability of the local gaming machine where the player islocated, such as gaming machine 105 a in FIG. 1. When the Game App 1interface requirements are indeed compatible with the interface ofgaming machine 105 a, the method 800 proceeds to step 830. In step 825,when the respective requirements are not compatible with one another, instep 827, an error message is sent to or within the local gaming machineindicating that the interface requirements of the game application andthe gaming machine were incompatible.

In one embodiment, steps 820 and 825 of method 800 are performedseparately, that is, off-line with respect to the player providing userinput to select game applications. In this way, when the respectiveinterface requirements are incompatible, the game application can beremoved from the menu of game applications presented to the player instep 805. Thus, in this situation, the user would not have to experiencethe error message after requesting game play. Also, in anotherembodiment, the location record 210 and/or routing table 215 can beupdated accordingly, so that game applications incompatible with certaingaming machines are not listed as being available to interact with oneanother in those records.

In step 830, when the interface requirements are compatible, it isdetermined whether the requested game application is available forexecution on the remote gaming machines identified in step 817. A numberof factors can be taken into consideration in determining step 830,including jurisdictional regulations for the jurisdiction in whichgaming machines are located, licensing requirements associated with thegaming machines and game applications and imposed on a casino or otherfacility in which the gaming machines are situated, computationalcapacity, including processor and memory availability on the gamingmachine where the requested application is to be executed, and otherfactors as desired for the particular implementation. Any one of thesefactors can serve to limit the number of instances of game applicationsexecuting on the remote gaming machine and, hence, prohibit execution ofa further instance of a game application in step 830. The variousfactors and determinations of step 830 are described in greater detailbelow with respect to FIG. 12.

In step 830, when the requested game application is available, themethod 800 proceeds to step 840, described below. In step 830, when therequested game application is unavailable on that gaming machine, themethod 800 proceeds to step 835 to identify another remote gamingmachine having the requested game application. In one embodiment, arouting table 215, as mentioned above and described in greater detailbelow, is accessed to determine the proper remote gaming machine torequest execution of the desired game application.

FIG. 11 shows a routing table 215 for a particular gaming machine,constructed according to one embodiment of the present invention. Therouting table can be implemented in several ways. In one implementation,the routing table for a particular gaming machine lists in region 1105the other gaming machines in the network by network distance. That is,the list begins with the closest gaming machine in the system, followedby the next closest gaming machine, and concludes with the furthestgaming machine. In one implementation, a corresponding network addressfor each gaming machine in region 1105 is shown in region 1110. In oneexample, the sequence of gaming machines listed in region 1105 isarranged according to the minimum number of nodes to be traversed in anetwork to reach that gaming machine. That is, the gaming machine havingthe minimum number of nodes is listed as the first item in the list, andthe gaming machine having the highest number of nodes to traverse is atthe bottom of the list in region 1105. In another implementation, thelist in region 1105 is arranged according to the most recent gamingmachine to report availability of a requested game application. Such areport can be made in a status message broadcast to the gaming machinesin the system, as described below.

In FIG. 11, in one embodiment, regardless of how the sequence of gamingmachines in region 1105 is arranged, the processor 605 of the localgaming machine can access names of gaming machines in the list and sendrequest message to those gaming machines, one by one, until a gamingmachine responds that the requested application is available forexecution.

In FIG. 8A, in step 835, in one embodiment, a request message is sent tosuccessive gaming machines in list 1105 of routing table 215,requesting: (1) whether the gaming machine has the particular requestedgame application, and (2) if so, whether the requested game applicationis available to execute, that is, the same availability determinationdescribed above with respect to 830. In another embodiment, the routingtable 215 of FIG. 11 is using conjunction with location record 210 ofFIG. 9 to determine: (1) the gaming machines at which the requested gameapplication is located, using regions 905 and 910 of location record210, and then, cross-referencing the routing table 215 of FIG. 11 todetermine which of those gaming machines having the requested gameapplication are closest to the local gaming machine or otherwise higherin the list shown in region 1105. And in yet another embodiment, ratherthan use the routing table 215 of FIG. 11, the location record 210 ofFIG. 9 is used to determine which remote gaming machine has the mostinstances available of the particular requested game application. Theremote gaming machine having the highest number of available instancesis contacted, and that remote gaming machine will then perform themethod of step 830 to determine whether the requested game applicationis indeed available for execution at that time.

In FIG. 8A, in step 835, when no remote gaming machines have therequested game application, an error message is sent in step 827, andthe method 800 returns to step 805. In steps 830 and 835, when a remotegaming machine is identified, having availability to execute therequested game application, the method proceeds to step 840.

In step 840 of FIG. 8A, when it is determined that an instance of therequested game application is available for execution on one of theremote gaming machines, an instance of the requested game application isconditionally reserved for the local gaming machine. To this end, theremote gaming machines having the requested game application canbroadcast a status message described below, or otherwise indicate toother gaming machines in the system that that remote gaming machine has1 fewer instances available at that point in time. Preferably, theremote gaming machine having the requested game application alsoallocates appropriate processor and memory capacity for execution of theconditionally reserved game application.

In step 845 of FIG. 8A, the method 800 waits for the player to press abutton or, otherwise, for the local gaming machine to select theconditionally reserved game application to begin game play. In oneembodiment, such a selection is communicated from local gaming machine600 to the remote gaming machine having the requested game applicationusing control module 620 of FIG. 6 to send the selection. In step 847,when a selection is not made, generally after a predetermined amount oftime, the reservation of the requested game application is released andthe method returns to step 805. This outcome of step 845 addressessituations where a player changes his mind or for some other reasonchooses not to play the conditionally reserved game application. In suchsituations, it is beneficial to set a predetermined time, such asseveral minutes, after which the conditional reservation is released soother gaming machines in the system can access the game application. Andthis way, the system operates at higher efficiency. In addition, anydata associated with the reserved instance is preferably erased so thatthe information does not continue to reside on a storage medium. Thus,timed-out games are not recoverable.

In step 845 of FIG. 8A, when the reserved game application is selected,the method 800 proceeds to step 850. In step 850 of FIG. 8B, theconditionally reserved instance of the requested game application isexecuted on a processor within the gaming controller of the remotegaming machine, as shown in FIG. 7. In step 855 of FIG. 8B, in oneembodiment, processor 705 interacts with streaming modules 715 toretrieve and output any generic game play components from video andaudio content storage 405 or another suitable storage medium for outputto the local gaming machine over one of streaming channels 725 a-725 c.“Generic” component refers to video and/or audio files which can beused, regardless of the particular outcomes to present in the executedgame application. Examples of such generic game play components includevideo of spinning reels, card shuffling, desktop layout, user interfaceand menu, screen background, casino logo, and other common game ofchance occurrences. Because of their generic nature, such components canbe pre-stored in memory and retrieved as needed during execution ofvarious game applications. By contrast, “non-generic” component refersto video and audio outputs which are specific to the outcomes to bepresented in a particular game. Non-generic game play components aregenerally output by the executing game application rather than beingpre-stored and/or pre-rendered. During execution of a typical game, thestream of output data received at the gaming machine and presented onthe display and speakers includes interspersed generic and non-genericcomponents.

In alternative embodiments, generic multimedia components are stored ata central data storage medium in the system, or at the local gamingmachine. In this way, immediately after a player selects theconditionally reserved game application for execution, the player beginsreceiving output associated with game play. This immediate output ofgeneric game play components ensures that the player's interest level issustained and enhances the excitement of the gaming experience. Inaddition, in step 855, the immediate output of generic game playcomponents can mask any latency which may occur while game outcomes andother game output is generated before being sent to the local gamingmachine.

In step 860 of FIG. 8B, at about the time the generic game playcomponents are output, the conditionally reserved game application isexecuted to generate outcomes and other output data for delivery to thelocal gaming machine. Such output data, also referred to herein asnon-generic components and data, are generated by processor 705interacting with streaming module 715 of remote gaming machines 700,retrieving video and audio content components 405 as needed. Thisnon-generic output data is sent from streaming module 715 throughcommunications interface 720 to the local gaming machine over theappropriate network apparatus, depending on the desired implementation.As mentioned above, the video and audio content components 405 caninclude individual files of video and audio data to be output on thelocal gaming machine. In addition, streaming module 715 preferablyembeds any suitable authentication information, such as a digitalsignature, in one or more frames of the output data. Also, any gameparameters can be embedded in one or more frames, as described above,for delivery to the remote gaming machine.

In step 865 of FIG. 8B, the receiving module 625 of local gaming machine600 receives the output data over the streaming channel. In oneembodiment, receiving module 625 includes an MPEG-4 decoder or othersuitable decoder to decode video and audio data received over thestreaming channel. In step 867, preferably the output data isauthenticated according to the digital signature or other authenticationinformation embedded in the frames of output data. Such authenticationprovides security and prevents re-use of delivered outcomes in theoutput data.

In step 870 of FIG. 8B, data capture module 630 of local gaming machine600 captures parameters associated with the executing game applicationfrom the output data received and decoded by receiving module 625. Inone implementation, these parameters are embedded in screens or framesof the video content of the output data. Such parameters can be capturedusing image recognition and capture techniques such as those describedin commonly assigned and co-pending U.S. patent application Ser. No.10/758,828, entitled “Frame Capture of Actual Game Play,” filed Jan. 15,2004, which is hereby incorporated by reference. In step 875, thecaptured parameters are stored in nonvolatile memory 615, as shown inFIG. 6. The parameters can include various settings as described above.In another implementation, game parameters are generated at the serviceand embedded into one of the sub-channels of the streaming channel.These metadata are extracted (captured) at the destination gamingmachine's gaming controller.

In FIG. 8B, the method 800 proceeds from step 875 to step 877, whereoutcomes are cached in cache memory 610 of local gaming machine 600.Such caching of outcomes before output to the player of local gamingmachine 600 helps to minimize the perceived effect of network delays. Instep 880, the output data received by receiving module 625 is output onthe interface, e.g., display of the local gaming machine for the user.In step 885, the user can respond to the output data and interact withthe local gaming machine to play the executing game application on theremote gaming machine. In step 890, the player inputs are captured. Instep 895, the inputs are routed to the game executing processor via thecontrol channel. After step 895, the method returns to step 850. In oneembodiment, as shown in FIG. 6, a control module 620 receives userinput, and other control signals. Control module 620 sends the signalsto the remote gaming machine using an appropriate communicationsinterface 635 coupled to the data network. Using control module 620, theuser is unable to interact with the game application executing on theremote gaming machine.

FIG. 12 shows a flow diagram of a method 830 for determining whether arequested game application is indeed available for execution on aparticular remote gaming machine, corresponding to step 830 of FIG. 8A,performed in accordance with one embodiment of the present invention. Instep 1205, the request message from the local gaming machine for theparticular game application is received at the remote gaming machine. Instep 1210, the remote gaming machine checks to determine whetherinstances of the requested game application are already being executedat that remote gaming machine. When no other instances are beingexecuted, the method 830 proceeds to step 1220, described below.

In step 1210, when instances of the requested game application are beingexecuted, the method 830 proceeds to step 1215 to determine whetheranother instance of the requested game application can be executed. Inone embodiment, a predetermined maximum number of instances of theparticular game application is defined. This maximum can be set asdesired for the particular implementation. In one implementation,licensing requirements imposed on the casino dictate that only a certainmaximum number of instances of the game application can be executed at agiven time. Also, jurisdictional regulations imposed on the jurisdictionin which the gaming machine is situated can be factored in to set thismaximum. In step 1215, other factors can be taken into account todetermine the maximum number of instances of the game application. Also,in one embodiment, preferably one copy, i.e. instance of the requestedgame application is always reserved for players who wished to play thegame application on the remote gaming machine at which the gameapplication is situated. In this way, a player who interfaces directlywith the remote gaming machine will always be provided with gameapplications stored on that remote gaming machine. In such anembodiment, the predetermined maximum of step 1215 can be reduced by oneor more counts of the instances to be reserved for direct game play atthat remote gaming machine.

In step 1215 of FIG. 12, when there are fewer game application instancesthan the predetermined maximum, the method 830 proceeds to step 1220 inwhich it is determined whether there are sufficient processor and memorycapacity to execute a new instance of the game application. For example,the processor and/or memory may already be occupied by instances of therequested game application and instances of other game applicationsbeing executed. The determination step 1220 ensures that there issufficient processor availability and memory to execute an instance ofthe requested game application without a significant performancehindrance. As those skilled in the art will appreciate, thequantification of available processor and memory capacity will dependgreatly on the particular implementation, including the particularprocessor and memory hardware installed in the gaming machine, as wellas the computational demands of the particular game applications.

In step 1220 of FIG. 12, when there are fewer game application instancesthan the maximum (step 1215), and there are sufficient processor andmemory capacity (step 1220), the method 830 proceeds to step 1230,wherein the new instance of the game application can be executed inaccordance with method 800 of FIGS. 8A and 8B, described above.

In step 1215 and 1220 of FIG. 12, when the predetermined maximum hasbeen reached, and/or there are insufficient processor and/or memorycapacity, the method 830 proceeds to step 1225 in which a status messageis sent to the local gaming machine. This status message, in step 1225,generally indicates that another instance of the requested gameapplication cannot be executed for some reason. For example, followingstep 1215, the status message would indicate that the maximum number ofinstances of the requested game application are already in progress. Or,following step 1220, the status message would indicate that there areinsufficient computational resources to execute a new instance of therequested game application.

In FIG. 12, those skilled in the art should appreciate that the sequenceof determining steps 1210-1220 represents one possible implementation ofmethods for determining availability of a requested game application,performed in accordance with embodiments of the invention. Steps1210-1220 can be performed in any sequence, and one or more of the stepscan be omitted if desired. Other factors important to determiningwhether to allow the execution of a requested game application at aremote gaming machine can be considered. Alternatively, in oneembodiment, two or more of the steps 1210-1220 are performedconcurrently following step 1205.

FIG. 13 shows a status message 1300 sent by a remote gaming machine instep 1225 of FIG. 12, according to one embodiment of the presentinvention. In one embodiment, the status message sent by a particularremote gaming machine is broadcast to all of the gaming machines in thegaming system. In another embodiment, the status message is simply sentto the one local gaming machine requesting the game application. Asshown in FIG. 13, in one implementation, the status message 1300provides a listing of game applications situated on the particularremote gaming machine, in this example, Game App 1, Game App 2 and GameApp 3. This list is provided in region 1305 of status message 1300. Inanother region 1310 of status message 1300, information describes theavailability of each game application at the time the status message issent. For instance, when status message 1300 is sent, three instances ofGame App 1 are available, two instances of Game App 3 are available, andGame App 2 is unavailable at the remote gaming machine which sendsmessage 1300. In one embodiment, mentioned above with respect to FIG. 9,the status message can be interpreted by the gaming machines whichreceive that status message to update location records 210 and routingtables 215. For example, the number of instances of a particular gameapplication can be listed in the record 210, and updated accordingly.

FIG. 14 shows a menu displayed on a user interface of the local gamingmachine, provided according to one embodiment of the present invention.As shown, the menu 1400 can list any number of various gameapplications, for example, poker, electronic slots, bingo, black jack,and other games of chance on the system which can be played using thatlocal gaming machine. Unknown to the player, one or more of the listedgame applications in menu 1400 can be physically located on anothergaming machine, that is, a remote gaming machine, in the gaming system.For example, in FIG. 14, unknown to the user, Game App 1 and Game App 2are stored locally on the local gaming machine, while Game App 3 andGame App 4 are stored remotely on different gaming machines in thesystem. On the interface, when the player selects one of the graphicalbuttons 1405 associated with a particular game applications, the methodsdescribed above are initiated.

In FIG. 15, the menu 1400 is shown following an update performedresponsive to the methods described above with respect to FIGS. 8 and12. In this example, Game App 4, as shown in FIG. 14, has been removedfrom menu 1400. This is because, for example, following thedetermination as to interface compatibility in steps 820 and 825 of FIG.8A, or the determination of requested game application unavailability,in step 830 of FIGS. 8 and 12, it is determined that another instance ofGame App 4 cannot be executed. In this example, a status message 1300was sent to the local gaming machine from the remote gaming machine onwhich Game App 4 was stored. In this embodiment, responsive to receivingthe status message, the local gaming machine updated the menu 1400 toremove Game App 4 from the list. In this way, a player of the localgaming machine would preferably not see Game App 4 in the menu. In thisway, the player would be spared the frustration of selecting Game App 4to play, only to later discover that this desired game application wasunavailable.

In one embodiment, a failsafe mechanism is implemented in a gamingsystem constructed according to one embodiment of the present invention.This failsafe mechanism provides a method for maintaining remote gameplay on a particular remote gaming machine when a network error or othermalfunction occurs, hindering further remote game play using thatparticular remote gaming machine. In this embodiment, using a routingtable and/or location table described above, a further one of the remotegaming machines having the game application is identified, applying themethods described above with respect to FIGS. 8 and 12. When it isconfirmed that a further instance of the requested game application canbe executed on the identified remote gaming machine, execution begins,and remote game play is transferred from the remote gaming machine onwhich game play was initiated to the newly identified remote gamingmachine. This transfer step involves communicating a status of the gameapplication from the newly identified remote gaming machine. In oneembodiment, the communication of this status information includesproviding one or more parameters stored in memory 615 of the localgaming machine to the newly identified remote gaming machine. In anotherembodiment, the parameters are retrieved from another storage locationon the network, such as the original remote gaming machine, and providedto the newly identified remote gaming machine. Other status informationfacilitating a transfer of remote game play execution can betransferred, as will be appreciated by those skilled in the art.

In addition to the techniques described herein, techniques for thetransfer of game play from one gaming machine to another are describedin U.S. patent application Ser. No. 11/224,814, which has granted asU.S. Pat. No. 7,887,420, filed concurrently herewith, for METHOD ANDSYSTEM FOR INSTANT-ON GAME DOWNLOAD, which is hereby incorporated byreference. Such techniques are considered within the spirit and scope ofthe present invention, and are particularly beneficial to provide theuser with a near-continuous game play experience in the unlikelycircumstance of network failure or other error that might otherwisehinder remote game play.

One example of a gaming system, also referred to herein as a gamingnetwork, that may be used to implement methods performed in accordancewith embodiments of the invention is depicted in FIG. 16. Gamingestablishment 1601 could be any sort of gaming establishment, such as acasino, a card room, an airport, a store, etc. In this example, gamingnetwork 1677 includes more than one gaming establishment, all of whichare networked to game server 1622.

Here, gaming machine 1602, and the other gaming machines 1630, 1632,1634, and 1636, include a main cabinet 1606 and a top box 1604. The maincabinet 1606 houses the main gaming elements and can also houseperipheral systems, such as those that utilize dedicated gamingnetworks. The top box 1604 may also be used to house these peripheralsystems.

The master gaming controller 1608 controls the game play on the gamingmachine 1602 according to instructions and/or game data from game server1622 or stored within gaming machine 1602 and receives or sends data tovarious input/output devices 1611 on the gaming machine 1602. In oneembodiment, master gaming controller 1608 includes processor(s) andother apparatus of the gaming machines described above in FIGS. 6 and 7.The master gaming controller 1608 may also communicate with a display1610.

A particular gaming entity may desire to provide network gaming servicesthat provide some operational advantage. Thus, dedicated networks mayconnect gaming machines to host servers that track the performance ofgaming machines under the control of the entity, such as for accountingmanagement, electronic fund transfers (EFTs), cashless ticketing, suchas EZPay™, marketing management, and data tracking, such as playertracking. Therefore, master gaming controller 1608 may also communicatewith EFT system 1612, EZPay™ system 1616 (a proprietary cashlessticketing system of the present assignee), and player tracking system1620. The systems of the gaming machine 1602 communicate the data ontothe network 1622 via a communication board 1618.

It will be appreciated by those of skill in the art that embodiments ofthe present invention could be implemented on a network with more orfewer elements than are depicted in FIG. 16. For example, playertracking system 1620 is not a necessary feature of the presentinvention. However, player tracking programs may help to sustain a gameplayer's interest in additional game play during a visit to a gamingestablishment and may entice a player to visit a gaming establishment topartake in various gaming activities. Player tracking programs providerewards to players that typically correspond to the player's level ofpatronage (e.g., to the player's playing frequency and/or total amountof game plays at a given casino). Player tracking rewards may be freemeals, free lodging and/or free entertainment.

Moreover, DCU 1624 and translator 1625 are not required for all gamingestablishments 1601. However, due to the sensitive nature of much of theinformation on a gaming network (e.g., electronic fund transfers andplayer tracking data) the manufacturer of a host system usually employsa particular networking language having proprietary protocols. Forinstance, 10-20 different companies produce player tracking host systemswhere each host system may use different protocols. These proprietaryprotocols are usually considered highly confidential and not releasedpublicly.

Further, in the gaming industry, gaming machines are made by manydifferent manufacturers. The communication protocols on the gamingmachine are typically hard-wired into the gaming machine and each gamingmachine manufacturer may utilize a different proprietary communicationprotocol. A gaming machine manufacturer may also produce host systems,in which case their gaming machine are compatible with their own hostsystems. However, in a heterogeneous gaming environment, gaming machinesfrom different manufacturers, each with its own communication protocol,may be connected to host systems from other manufacturers, each withanother communication protocol. Therefore, communication compatibilityissues regarding the protocols used by the gaming machines in the systemand protocols used by the host systems must be considered.

A network device that links a gaming establishment with another gamingestablishment and/or a central system will sometimes be referred toherein as a “site controller.” Here, site controller 1642 provides thisfunction for gaming establishment 1601. Site controller 1642 isconnected to a central system and/or other gaming establishments via oneor more networks, which may be public or private networks. Among otherthings, site controller 1642 communicates with game server 1622 toobtain game data, such as ball drop data, bingo card data, etc.

In the present illustration, gaming machines 1602, 1630, 1632, 1634 and1636 are connected to a dedicated gaming network 1622. In general, theDCU 1624 functions as an intermediary between the different gamingmachines on the network 1622 and the site controller 1642. In general,the DCU 1624 receives data transmitted from the gaming machines andsends the data to the site controller 1642 over a transmission path1626. In some instances, when the hardware interface used by the gamingmachine is not compatible with site controller 1642, a translator 1625may be used to convert serial data from the DCU 1624 to a formataccepted by site controller 1642. The translator may provide thisconversion service to a plurality of DCUs.

Further, in some dedicated gaming networks, the DCU 1624 can receivedata transmitted from site controller 1642 for communication to thegaming machines on the gaming network. The received data may be, forexample, communicated synchronously to the gaming machines on the gamingnetwork.

Here, CVT 1652 provides cashless and cashout gaming services to thegaming machines in gaming establishment 1601. Broadly speaking, CVT 1652authorizes and validates cashless gaming machine instruments (alsoreferred to herein as “tickets” or “vouchers”), including but notlimited to tickets for causing a gaming machine to display a game resultand cash-out tickets. Moreover, CVT 1652 authorizes the exchange of acashout ticket for cash. These processes will be described in detailbelow. In one example, when a player attempts to redeem a cash-outticket for cash at cashout kiosk 1644, cash out kiosk 1644 readsvalidation data from the cashout ticket and transmits the validationdata to CVT 1652 for validation. The tickets may be printed by gamingmachines, by cashout kiosk 1644, by a stand-alone printer, by CVT 1652,etc. Some gaming establishments will not have a cashout kiosk 1644.Instead, a cashout ticket could be redeemed for cash by a cashier (e.g.of a convenience store), by a gaming machine or by a speciallyconfigured CVT.

Turning to FIG. 17, more details of gaming machine 1602 are described.Machine 1602 includes a main cabinet 4, which generally surrounds themachine interior (not shown) and is viewable by users. The main cabinet4 includes a main door 8 on the front of the machine, which opens toprovide access to the interior of the machine. Attached to the main doorare player-input switches or buttons 32, a coin acceptor 28, and a billvalidator 30, a coin tray 38, and a belly glass 40. Viewable through themain door is a video display monitor 34 and an information panel 36. Thedisplay monitor 34 will typically be a cathode ray tube, high resolutionflat-panel LCD, or other conventional electronically controlled videomonitor. The information panel 36 may be a back-lit, silk screened glasspanel with lettering to indicate general game information including, forexample, the number of coins played. The bill validator 30, player-inputswitches 32, video display monitor 34, and information panel are devicesused to play a game on the game machine 1602. The devices are controlledby circuitry housed inside the main cabinet 4 of the machine 1602.

The gaming machine 1602 includes a top box 6, which sits on top of themain cabinet 4. The top box 6 houses a number of devices, which may beused to add features to a game being played on the gaming machine 1602,including speakers 10, 12,14, a ticket printer 18 which may printbar-coded tickets 20 used as cashless instruments. The player trackingunit mounted within the top box 6 includes a key pad 22 for enteringplayer tracking information, a florescent display 16 for displayingplayer tracking information, a card reader 24 for entering a magneticstriped card containing player tracking information, a microphone forinputting voice data, a speaker 42 for projecting sounds and a lightpanel 45 for display various light patterns used to convey gaminginformation. In other embodiments, the player tracking unit andassociated player tracking interface devices, such as 16, 22, 24, 42, 43and 44, may be mounted within the main cabinet 4 of the gaming machine,on top of the gaming machine, or on the side of the main cabinet of thegaming machine.

Understand that gaming machine 1602 is but one example from a wide rangeof gaming machine designs on which the present invention may beimplemented. For example, not all suitable gaming machines have topboxes or player tracking features. Further, some gaming machines havetwo or more game displays—mechanical and/or video. Some gaming machinesare designed for bar tables and have displays that face upwards. Stillfurther, some machines may be designed entirely for cashless systems.Such machines may not include such features as bill validators, coinacceptors and coin trays. Instead, they may have only ticket readers,card readers and ticket dispensers. Those of skill in the art willunderstand that the present can be deployed on most gaming machines nowavailable or hereafter developed. Moreover, some aspects of theinvention may be implemented on devices which lack some of the featuresof the gaming machines described herein, e.g., workstation, desktopcomputer, a portable computing device such as a personal digitalassistant or similar handheld device, a cellular telephone, etc. U.S.patent application Ser. No. 09/967,326, filed Sep. 28, 2001 and entitled“Wireless Game Player,” is hereby incorporated by reference for allpurposes.

Returning to the example of FIG. 17, when a user wishes to play thegaming machine 1602, he or she inserts cash through the coin acceptor 28or bill validator 30. In addition, the player may use a cashlessinstrument of some type to register credits on the gaming machine 1602.For example, the bill validator 30 may accept a printed ticket voucher,including 20, as an indicium of credit. As another example, the cardreader 24 may accept a debit card or a smart card containing cash orcredit information that may be used to register credits on the gamingmachine.

During the course of a game, a player may be required to make a numberof decisions. For example, a player may vary his or her wager on aparticular game, select a prize for a particular game, or make gamedecisions regarding gaming criteria that affect the outcome of aparticular game (e.g., which cards to hold). The player may make thesechoices using the player-input switches 32, the video display screen 34or using some other hardware and/or software that enables a player toinput information into the gaming machine (e.g. a GUI displayed ondisplay 16).

During certain game functions and events, the gaming machine 1602 maydisplay visual and auditory effects that can be perceived by the player.These effects add to the excitement of a game, which makes a player morelikely to continue playing. Auditory effects include various sounds thatare projected by the speakers 10, 12, 14. Visual effects includeflashing lights, strobing lights or other patterns displayed from lightson the gaming machine 1602, from lights behind the belly glass 40 or thelight panel on the player tracking unit 44.

After the player has completed a game, the player may receive gametokens from the coin tray 38 or the ticket 20 from the printer 18, whichmay be used for further games or to redeem a prize. Further, the playermay receive a ticket 20 for food, merchandise, or games from the printer18. The type of ticket 20 may be related to past game playing recordedby the player tracking software within the gaming machine 1602. In someembodiments, these tickets may be used by a game player to obtain gameservices.

IGT gaming machines are implemented with special features and/oradditional circuitry that differentiate them from general-purposecomputers (e.g., desktop PC's and laptops). Gaming machines are highlyregulated to ensure fairness and, in many cases, gaming machines areoperable to dispense monetary awards of multiple millions of dollars.Therefore, to satisfy security and regulatory requirements in a gamingenvironment, hardware and software architectures may be implemented ingaming machines that differ significantly from those of general-purposecomputers. A description of gaming machines relative to general-purposecomputing machines and some examples of the additional (or different)components and features found in gaming machines are described below.

At first glance, one might think that adapting PC technologies to thegaming industry would be a simple proposition because both PCs andgaming machines employ microprocessors that control a variety ofdevices. However, because of such reasons as 1) the regulatoryrequirements that are placed upon gaming machines, 2) the harshenvironment in which gaming machines operate, 3) security requirementsand 4) fault tolerance requirements, adapting PC technologies to agaming machine can be quite difficult. Further, techniques and methodsfor solving a problem in the PC industry, such as device compatibilityand connectivity issues, might not be adequate in the gamingenvironment. For instance, a fault or a weakness tolerated in a PC, suchas security holes in software or frequent crashes, may not be toleratedin a gaming machine because in a gaming machine these faults can lead toa direct loss of funds from the gaming machine, such as stolen cash orloss of revenue when the gaming machine is not operating properly.

For the purposes of illustration, a few differences between PC systemsand gaming systems will be described. A first difference between gamingmachines and common PC based computers systems is that gaming machinesare designed to be state-based systems. In a state-based system, thesystem stores and maintains its current state in a non-volatile memory,such that, in the event of a power failure or other malfunction thegaming machine will return to its current state when the power isrestored. For instance, if a player was shown an award for a game ofchance and, before the award could be provided to the player the powerfailed, the gaming machine, upon the restoration of power, would returnto the state where the award is indicated. As anyone who has used a PC,knows, PCs are not state machines and a majority of data is usually lostwhen a malfunction occurs. This requirement affects the software andhardware design on a gaming machine.

A second important difference between gaming machines and common PCbased computer systems is that for regulation purposes, the software onthe gaming machine used to generate the game of chance and operate thegaming machine has been designed to be static and monolithic to preventcheating by the operator of gaming machine. For instance, one solutionthat has been employed in the gaming industry to prevent cheating andsatisfy regulatory requirements has been to manufacture a gaming machinethat can use a proprietary processor running instructions to generatethe game of chance from an EPROM or other form of non-volatile memory.The coding instructions on the EPROM are static (non-changeable) andmust be approved by a gaming regulators in a particular jurisdiction andinstalled in the presence of a person representing the gamingjurisdiction. Any changes to any part of the software required togenerate the game of chance, such as adding a new device driver used bythe master gaming controller to operate a device during generation ofthe game of chance can require a new EPROM to be burnt, approved by thegaming jurisdiction and reinstalled on the gaming machine in thepresence of a gaming regulator. Regardless of whether the EPROM solutionis used, to gain approval in most gaming jurisdictions, a gaming machinemust demonstrate sufficient safeguards that prevent an operator of agaming machine from manipulating hardware and software in a manner thatgives them an unfair and some cases an illegal advantage. The codevalidation requirements in the gaming industry affect both hardware andsoftware designs on gaming machines.

A third important difference between gaming machines and common PC basedcomputer systems is the number and kinds of peripheral devices used on agaming machine are not as great as on PC based computer systems.Traditionally, in the gaming industry, gaming machines have beenrelatively simple in the sense that the number of peripheral devices andthe number of functions the gaming machine has been limited. Further, inoperation, the functionality of gaming machines were relatively constantonce the gaming machine was deployed, i.e., new peripherals devices andnew gaming software were infrequently added to the gaming machine. Thisdiffers from a PC where users will go out and buy different combinationsof devices and software from different manufacturers and connect them toa PC to suit their needs depending on a desired application. Therefore,the types of devices connected to a PC may vary greatly from user touser depending in their individual requirements and may varysignificantly over time.

Although the variety of devices available for a PC may be greater thanon a gaming machine, gaming machines still have unique devicerequirements that differ from a PC, such as device security requirementsnot usually addressed by PCs. For instance, monetary devices, such ascoin dispensers, bill validators and ticket printers and computingdevices that are used to govern the input and output of cash to a gamingmachine have security requirements that are not typically addressed inPCs. Therefore, many PC techniques and methods developed to facilitatedevice connectivity and device compatibility do not address the emphasisplaced on security in the gaming industry.

To address some of the issues described above, a number of hardwarecomponents, software components and architectures are utilized in gamingmachines that are not typically found in general purpose computingdevices, such as PCs. These hardware/software components andarchitectures, as described below in more detail, include but are notlimited to watchdog timers, voltage monitoring systems, state-basedsoftware architecture and supporting hardware, specialized communicationinterfaces, security monitoring and trusted memory.

A watchdog timer is normally used in IGT gaming machines to provide asoftware failure detection mechanism. In a normally operating system,the operating software periodically accesses control registers in thewatchdog timer subsystem to “re-trigger” the watchdog. Should theoperating software fail to access the control registers within a presettimeframe, the watchdog timer will timeout and generate a system reset.Typical watchdog timer circuits contain a loadable timeout counterregister to allow the operating software to set the timeout intervalwithin a certain range of time. A differentiating feature of the somepreferred circuits is that the operating software cannot completelydisable the function of the watchdog timer. In other words, the watchdogtimer always functions from the time power is applied to the board.

IGT gaming computer platforms preferably use several power supplyvoltages to operate portions of the computer circuitry. These can begenerated in a central power supply or locally on the computer board. Ifany of these voltages falls out of the tolerance limits of the circuitrythey power, unpredictable operation of the computer may result. Thoughmost modern general-purpose computers include voltage monitoringcircuitry, these types of circuits only report voltage status to theoperating software. Out of tolerance voltages can cause softwaremalfunction, creating a potential uncontrolled condition in the gamingcomputer. Gaming machines of the present assignee typically have powersupplies with tighter voltage margins than that required by theoperating circuitry. In addition, the voltage monitoring circuitryimplemented in IGT gaming computers typically has two thresholds ofcontrol. The first threshold generates a software event that can bedetected by the operating software and an error condition generated.This threshold is triggered when a power supply voltage falls out of thetolerance range of the power supply, but is still within the operatingrange of the circuitry. The second threshold is set when a power supplyvoltage falls out of the operating tolerance of the circuitry. In thiscase, the circuitry generates a reset, halting operation of thecomputer.

The standard method of operation for IGT slot machine game software isto use a state machine. Each function of the game (bet, play, result,etc.) is defined as a state. When a game moves from one state toanother, critical data regarding the game software is stored in a customnon-volatile memory subsystem. In addition, game history informationregarding previous games played, amounts wagered, and so forth alsoshould be stored in a non-volatile memory device. This feature allowsthe game to recover operation to the current state of play in the eventof a malfunction, loss of power, etc. This is critical to ensure theplayer's wager and credits are preserved. Typically, battery backed RAMdevices are used to preserve this critical data. These memory devicesare not used in typical general-purpose computers.

IGT gaming computers normally contain additional interfaces, includingserial interfaces, to connect to specific subsystems internal andexternal to the slot machine. As noted above, some preferred embodimentsof the present invention include parallel, digital interfaces forhigh-speed data transfer. However, even the serial devices may haveelectrical interface requirements that differ from the “standard” EIA232 serial interfaces provided by general-purpose computers. Theseinterfaces may include EIA 485, EIA 422, Fiber Optic Serial, OpticallyCoupled Serial Interfaces, current loop style serial interfaces, etc. Inaddition, to conserve serial interfaces internally in the slot machine,serial devices may be connected in a shared, daisy-chain fashion wheremultiple peripheral devices are connected to a single serial channel.

IGT gaming machines may alternatively be treated as peripheral devicesto a casino communication controller and connected in a shared daisychain fashion to a single serial interface. In both cases, theperipheral devices are preferably assigned device addresses. If so, theserial controller circuitry must implement a method to generate ordetect unique device addresses. General-purpose computer serial portsare not able to do this.

Security monitoring circuits detect intrusion into an IGT gaming machineby monitoring security switches attached to access doors in the slotmachine cabinet. Preferably, access violations result in suspension ofgame play and can trigger additional security operations to preserve thecurrent state of game play. These circuits also function when power isoff by use of a battery backup. In power-off operation, these circuitscontinue to monitor the access doors of the slot machine. When power isrestored, the gaming machine can determine whether any securityviolations occurred while power was off, e.g., via software for readingstatus registers. This can trigger event log entries and further dataauthentication operations by the slot machine software.

Trusted memory devices are preferably included in an IGT gaming machinecomputer to ensure the authenticity of the software that may be storedon less secure memory subsystems, such as mass storage devices. Trustedmemory devices and controlling circuitry are typically designed to notallow modification of the code and data stored in the memory devicewhile the memory device is installed in the slot machine. The code anddata stored in these devices may include authentication algorithms,random number generators, authentication keys, operating system kernels,etc. The purpose of these trusted memory devices is to provide gamingregulatory authorities a root trusted authority within the computingenvironment of the slot machine that can be tracked and verified asoriginal. This may be accomplished via removal of the trusted memorydevice from the slot machine computer and verification of the trustedmemory device contents in a separate third party verification device.Once the trusted memory device is verified as authentic, and based onthe approval of the verification algorithms contained in the trusteddevice, the gaming machine is allowed to verify the authenticity ofadditional code and data that may be located in the gaming computerassembly, such as code and data stored on hard disk drives.

Mass storage devices used in a general-purpose computer typically allowcode and data to be read from and written to the mass storage device. Ina gaming machine environment, modification of the gaming code stored ona mass storage device is strictly controlled and would only be allowedunder specific maintenance type events with electronic and physicalenablers required. Though this level of security could be provided bysoftware, IGT gaming computers that include mass storage devicespreferably include hardware level mass storage data protection circuitrythat operates at the circuit level to monitor attempts to modify data onthe mass storage device and will generate both software and hardwareerror triggers should a data modification be attempted without theproper electronic and physical enablers being present.

Gaming machines used for Class III games generally include softwareand/or hardware for generating random numbers. However, gaming machinesused for Class II games may or may not have RNG capabilities. In somemachines used for Class II games, RNG capability may be disabled.

FIG. 18 illustrates an example of a network device that may beconfigured as a game server for implementing some methods of the presentinvention. Network device 1860 includes a master central processing unit(CPU) 1862, interfaces 1868, and a bus 1867 (e.g., a PCI bus).Generally, interfaces 1868 include ports 1869 appropriate forcommunication with the appropriate media. In some embodiments, one ormore of interfaces 1868 includes at least one independent processor and,in some instances, volatile RAM. The independent processors may be, forexample, ASICs or any other appropriate processors. According to somesuch embodiments, these independent processors perform at least some ofthe functions of the logic described herein. In some embodiments, one ormore of interfaces 1868 control such communications-intensive tasks asencryption, decryption, compression, decompression, packetization, mediacontrol and management. By providing separate processors for thecommunications-intensive tasks, interfaces 1868 allow the mastermicroprocessor 1862 efficiently to perform other functions such asrouting computations, network diagnostics, security functions, etc.

The interfaces 1868 are typically provided as interface cards (sometimesreferred to as “linecards”). Generally, interfaces 1868 control thesending and receiving of data packets over the network and sometimessupport other peripherals used with the network device 1860. Among theinterfaces that may be provided are FC interfaces, Ethernet interfaces,frame relay interfaces, cable interfaces, DSL interfaces, token ringinterfaces, and the like. In addition, various very high-speedinterfaces may be provided, such as fast Ethernet interfaces, GigabitEthernet interfaces, ATM interfaces, HSSI interfaces, POS interfaces,FDDI interfaces, ASI interfaces, DHEI interfaces and the like.

When acting under the control of appropriate software or firmware, insome implementations of the invention CPU 1862 may be responsible forimplementing specific functions associated with the functions of adesired network device. According to some embodiments, CPU 1862accomplishes all these functions under the control of software includingan operating system and any appropriate applications software.

CPU 962 may include one or more processors 1863 such as a processor fromthe Motorola family of microprocessors or the MIPS family ofmicroprocessors. In an alternative embodiment, processor 1863 isspecially designed hardware for controlling the operations of networkdevice 1860. In a specific embodiment, a memory 1861 (such asnon-volatile RAM and/or ROM) also forms part of CPU 1862. However, thereare many different ways in which memory could be coupled to the system.Memory block 1861 may be used for a variety of purposes such as, forexample, caching and/or storing data, programming instructions, etc.

Regardless of network device's configuration, it may employ one or morememories or memory modules (such as, for example, memory block 1865)configured to store data, program instructions for the general-purposenetwork operations and/or other information relating to thefunctionality of the techniques described herein. The programinstructions may control the operation of an operating system and/or oneor more applications, for example.

Because such information and program instructions may be employed toimplement the systems/methods described herein, the present inventionrelates to machine-readable media that include program instructions,state information, etc. for performing various operations describedherein. Examples of machine-readable media include, but are not limitedto, magnetic media such as hard disks, floppy disks, and magnetic tape;optical media such as CD-ROM disks; magneto-optical media; and hardwaredevices that are specially configured to store and perform programinstructions, such as read-only memory devices (ROM) and random accessmemory (RAM). The invention may also be embodied in a carrier wavetraveling over an appropriate medium such as airwaves, optical lines,electric lines, etc. Examples of program instructions include bothmachine code, such as produced by a compiler, and files containinghigher-level code that may be executed by the computer using aninterpreter.

Although the system shown in FIG. 18 illustrates one specific networkdevice of the present invention, it is by no means the only networkdevice architecture on which the present invention can be implemented.For example, an architecture having a single processor that handlescommunications as well as routing computations, etc. is often used.Further, other types of interfaces and media could also be used with thenetwork device. The communication path between interfaces may be busbased (as shown in FIG. 18) or switch fabric based (such as across-bar).

FIG. 19 shows an interaction diagram of a method of remote gaming forproviding a game of chance, performed in accordance with one embodimentof the present invention. In FIG. 19, the interaction diagram shows theprocessing occurring at a local gaming machine 1910, the processing at aremote gaming machine 1920, and the interaction between the remote andlocal gaming machines. Certain steps of the interaction diagram 1900 aredescribed above, particularly with respect to FIGS. 8A and 8B.

In FIG. 19, processing on the local gaming machine 1910 begins in step1925 with displaying a list of games available for play. On the remotegaming machine 1920, at some time before the player is allowed to selecta game, at least portions of the available game applications aregenerated and, in some instances, pre-rendered in step 1930. In step1935, parameters associated with the game or games are stored innon-volatile RAM. These game parameters can be used to recreate the gamein the event of a network failure or other error causing game play tocease. Also, in step 1935, before streaming begins, preferably gameapplications are marked with an appropriate status indicator such as“unsent.” Also, in step 1935, a predetermined time limit to deleteunused games is set, further described in step 1988 below.

In FIG. 19, in step 1940, when a request for a particular gameapplication is received from a player at the local gaming machine, instep 1940, the appropriate remote gaming machine having the requestedgame application is located using techniques described above. In step1945, after the requested application is identified, the gameapplication is preferably reserved in step 1947, as described above, onthe remote gaming machine. In one embodiment, an acknowledge messageconfirming the reservation is sent in step 1950 from the remote gamingmachine back to the local gaming machine. In step 1955, the interface ofthe local gaming machine is configured according to playerspecifications, such as bet limits, paylines and other information. Inone embodiment, this local interface configuration information is readfrom a player tracking card or otherwise input by the player at thelocal gaming machine. In step 1960, the local gaming machine receives awager amount and initiate game signal from the player. In step 1965,responsive to the initiate game signal, the local gaming machinerequests a game outcome from the remote gaming machine. In someembodiments, this request message, in step 1965, includes the interfaceconfiguration parameters such as wager information and pay lines.

In FIG. 19, in step 1970, responsive to the game outcome requestmessage, the remote gaming machine locates a pre-rendered game thatmeets the received parameters, when possible. Otherwise, in step 1970,the remote gaming machine begins generating a new game or game outcome.In step 1975, output data of the game application begins streaming fromthe remote to the local gaming machine. In some embodiments, thestreamed output data includes a header which provides parameters neededto recreate the outcome or outcomes in the game output data. In someembodiments, the status of the game is then changed from “unsent” to“pending” status. As output data, including game outcomes, are receivedat the local gaming machine in step 1980, game outcomes are stored asdescribed above. In step 1982, when outcomes of the game application arereceived at the local gaming machine, in one embodiment, an acknowledgemessage is sent back to the remote gaming machine.

In FIG. 19, in step 1984, responsive to receiving the acknowledgemessage, the remote gaming machine marks the status of the gameapplication as “played,” or a similar designation indicating that thegame has been executed with output(s) sent to the local gaming machine.Then, in step 1986, the length of time that the stored games have beensituated at the remote gaming machine is checked against thepredetermined time limit of step 1935 to determine whether that timelimit has been exceeded. In step 1988, any pre-rendered games that werenot used, for which the time limits have expired, can be deleted.

In FIG. 19, on the local gaming machine side, after game outcomes arestored in step 1980, those outcomes can be displayed appropriately instep 1990. The status of the game is marked “played,” at the localgaming machine, and credit meters implemented in non-volatile RAM at thelocal gaming machine are updated accordingly, in step 1992.

FIG. 20 shows a method 2000 of remote gaming for providing a game ofchance, including a scheme for responding to network failures, inaccordance with one embodiment of the present invention. In step 2005,communications are established between the local gaming machine andremote gaming machine. After communications are established, in step2010, streaming of output data from a game application is initiated fromthe remote gaming machine to the local gaming machine, as describedabove. The streamed video components of the output data are displayed atthe local gaming machine, in step 2015, as described above.

In FIG. 20, in step 2020, an interrupt is detected. This interruptrepresents any loss of communications or other interference withcommunications between the local gaming machine and remote gamingmachine. Such an interrupt may often be detected when acknowledgementmessages, such as those described above in steps 1950 and 1982 of FIG.19 are not received at the local gaming machine or remote gamingmachine. In some situations, a network interrupt condition, in step2020, may occur as results are being displayed on the display of thelocal gaming machine. Thus, in some embodiments, it is beneficial toplace recreation game parameters, that is parameters allowing thestreamed output data to be recreated, at the head of the stream ofoutput data. In step 2020, in some embodiments, after an interrupt isdetected, an attendant request message may be sent to a computer orother data processing device operated by a casino attendant, requestingassistance.

In FIG. 20, in step 2025, the local gaming machine determines whetherthe outcome of the executing game application has been received. In step2025, when the outcome has been received, the outcome is displayed andthe machine credit meter is updated accordingly (step 2030), in someembodiments. Then, in step 2035, the local gaming machine identifiesanother gaming machine in the system that can replace the previousremote gaming machine and provide the same game application. Techniquesfor identifying another suitable remote gaming machine that can play thesame game are described above. In step 2040, after an appropriate otherremote gaming machine is identified, game play history and parametersreceived at the local gaming machine are sent to the new remote gamingmachine, allowing game play to be recreated at the new remote gamingmachine. Then, the interaction described above between the local gamingmachine and the original remote gaming machine is reinitiated, with thenew or second remote gaming machine providing the functionality of thefirst remote gaming machine, beginning when the interrupt was originallydetected in step 2020. Thus, in step 2045 a recreated stream of outputdata is received at the local gaming machine from the second remotegaming machine. Accordingly, in step 2050, the recreated game outcomescan be displayed at the local gaming machine, and in step 2055, anacknowledge message can be sent back to the second remote gamingmachine, indicating that the game has indeed been played. Accordingly,the game play status for that game at the remote gaming machine can beupdated to “played” status.

In FIG. 20, returning to step 2025, when an outcome has not yet beenreceived at the local gaming machine after an interrupt is detected, instep 2060, the local gaming machine attempts to locate another gamingmachine in the network that has the game that was requested for play. Instep 2065, when the game is available on another gaming machine, thelocal gaming machine interacts with the newly identified remote gamingmachine, as described above, to begin streaming the output data from thenew remote gaming machine, in step 2070. Returning to step 2065, whenthe requested game application is not available on any other gamingmachines in the network, in step 2075, a notification message isdisplayed on the display of the local gaming machine, indicating to theplayer that the requested game application is not available, andpreferably, suggesting a similar game to the player.

FIG. 21 shows a method of addressing game history recalls at a gamingmachine, performed in accordance with one embodiment of the presentinvention. In method 2100, game history information preferably stored innon-volatile memory of a local gaming machine and/or remote gamingmachine is used to resolve disputes or for auditing purposes. In step2105, when a dispute arises, a game history request for a previouslyplayed game is received. In one embodiment, this request message isreceived at a server or other data processing device, such as a handheldunit, held by a casino attendant. Responsive to the game historyrequest, in step 2110, the game history parameters associated with theparticular game in dispute are located, often in a bank of non-volatilememory at the local gaming machine, and/or remote gaming machine,depending on the desired implementation as described above. In somesituations, in step 2115, a game history is unavailable. Such may be thecase when the game history of the gaming dispute has been overwritten orotherwise deleted. In these situations, in step 2120, the player and/orthe attendant is notified that the dispute cannot be resolved. Returningto step 2115, when the requested game history is available, the methodproceeds to step 2125 to determine whether a video history of thereceived frames of output data of that game are available. When suchframes are available, in step 2130, the video history is retrieved andprovided as the game history, including the outcomes of that game. Thisgame history can be displayed on the data processing device or operatedby casino personnel.

In FIG. 21, returning to step 2125, when the video history is notavailable, in step 2135, it is determined whether the local gamingmachine on which the game was played can recreate the game outcome indispute, for example, when the game and same parameters are stillavailable on the local gaming machine. When the game can be recreated,in step 2140, the game parameters are retrieved to play back the game.Then, in step 2145, the presentation of outcomes is recreated, anddisplayed on a display of the gaming machine in step 2150.

In FIG. 21, returning to step 2135, when the gaming machine does nothave recreation capability, in step 2155, a remote gaming machine withthe particular game application and having playback capability to playback the game using the supplied game history parameters is identified,using techniques described above. In many instances, a suitable remotegaming machine is the original remote gaming machine that provided thegame that is disputed. When a suitable remote gaming machine or centralserver that can recreate the game identified, in step 2155, the methodproceeds to step 2160, in which the play back parameters are sent to theidentified remote gaming machine to recreate the gaming dispute. Then,in step 2165, the game outcome is generated and displayed to resolve thedispute.

Those skilled in the art should understand that methods performed inaccordance with embodiments of the present invention can include part orall of method 800 in FIGS. 8A and 8B, part or all of method 1900 in FIG.19, part or all of method 2000 of FIG. 20, part or all of method 2100 ofFIG. 21, and combinations of steps described with respect to the variousFIGS. 8A, 8B and 19-21.

The above-described devices and materials will be familiar to those ofskill in the computer hardware and software arts. Although many of thecomponents and processes are described above in the singular forconvenience, it will be appreciated by one of skill in the art thatmultiple components and repeated processes can also be used to practicethe techniques of the present invention.

Although the foregoing invention has been described in some detail forpurposes of clarity of understanding, it will be apparent that certainchanges and modifications may be practiced within the scope of theappended claims.

What is claimed is:
 1. A local gaming machine configured to interactwith a remote gaming machine to provide games of chance, the localgaming machine comprising: a gaming controller configured to: identify alocation of a first game application as being at the remote gamingmachine, the remote gaming machine being configured to store and executeone or more remote game applications including the first gameapplication, and request reservation of an instance of the first gameapplication at the remote gaming machine when it is determined that thefirst game application is available for execution at the remote gamingmachine; a communications interface coupled to receive a request fromthe remote gaming machine for a second game application; a storagemedium configured to store one or more local game applications includingthe second game application; the gaming controller further configuredto: execute the one or more local game applications, and reserve aninstance of the second game application when it is determined that thesecond game application is available for execution at the local gamingmachine.
 2. The local gaming machine of claim 1, wherein: the gamingcontroller is configured to execute the instance of the second gameapplication; and the communications interface is coupled to provideoutput data of the executed instance of the second game application tothe remote gaming machine over a data network.
 3. The local gamingmachine of claim 2, wherein the communications interface is coupled toreceive, responsive to execution of the instance of the first gameapplication at the remote gaming machine, output data of the executinginstance of the first game application from the remote gaming machineover the data network.
 4. The local gaming machine of claim 3, whereinthe gaming controller is further configured to perform one or more of:storing the received output data in a memory, and providing the receivedoutput data to a user interface.
 5. The local gaming machine of claim 3,further comprising: a data capture module coupled to: capture one ormore game parameters from one or more frames of the received outputdata, and store the captured game parameters in a memory, wherein: thegame parameters include one or more of: a credit meter, a bet meter, abet history, lines bet, number of credits, side bets, and an outcomehistory.
 6. The local gaming machine of claim 1, wherein thecommunications interface is further coupled to provide authenticationinformation in a frame of the output data.
 7. A method of providinggames of chance on a gaming machine over a data network, the gamingmachine including a processor that executes instructions stored in anon-transitory computer readable medium, the method comprising:identifying by the processor a location of a first game application asbeing at a remote gaming machine, the remote gaming machine configuredto store and execute one or more remote game applications including thefirst game application; determining by the processor whether the firstgame application is available for execution at the remote gamingmachine; reserving by the processor an instance of the first gameapplication at the remote gaming machine when it is determined that thefirst game application is available for execution; receiving by theprocessor, at the local gaming machine, a request message for a secondgame application from the remote gaming machine, the local gamingmachine configured to store and execute one or more local gameapplications including the second game application; determining by theprocessor whether the second game application is available for executionat the local gaming machine; and reserving by the processor an instanceof the second game application at the local gaming machine when it isdetermined that the second game application is available for execution.8. The method of claim 7, further comprising: releasing the reservedinstance of the first game application at the remote machine.
 9. Themethod of claim 7, further comprising: receiving, responsive toexecution of the first game application at the remote gaming machine,output data of the executing first game application from the remotegaming machine over the data network; providing the received output dataon an interface of the local gaming machine; receiving a generic outputdata component from a storage medium; and providing the generic outputdata component on the interface of the local gaming machine.
 10. Themethod of claim 9, wherein the storage medium is situated at the localgaming machine or at the remote gaming machine.
 11. The method of claim7, wherein determining whether the first game application is availablefor execution at the remote gaming machine includes identifying theremote gaming machine as one of a plurality of gaming machines havingthe first game application and having a closest network distance to thelocal gaming machine.
 12. The method of claim 11, wherein identifyingthe remote gaming machine as one of the plurality of gaming machineshaving the game application includes: accessing a routing table listinga sequence of gaming machines.
 13. The method of claim 12, wherein thesequence of gaming machines is arranged according to most often accessedgaming machines.
 14. The method of claim 12, wherein the sequence ofgaming machines is arranged according to most often accessed gameapplications.
 15. The method of claim 7, further comprising: receivinguser interaction signals from an input terminal of the local gamingmachine; sending the user interaction signals from the local gamingmachine to the remote gaming machine over the data network.
 16. Themethod of claim 7, further comprising: identifying interfacerequirements of the first game application; determining whether theidentified interface requirements are compatible with an interface ofthe local gaming machine, wherein the interface requirements of thefirst game application include one or more of: input button information,payline information, denominations, paytable information, processorspeed, memory availability, and hard disk space.
 17. The method of claim7 further comprising: receiving, at an input terminal, a gameconfiguration input setting parameters for the first game application,wherein the parameters include one or more of: payline information, awager amount, and a jackpot; and sending the game configuration input tothe remote gaming machine.
 18. The method of claim 7, whereindetermining whether the first game application is available forexecution at the remote gaming machine includes one or more of:determining compliance of the first game application with interfacerequirements, determining compliance of the first game application withlicensing requirements, and determining compliance of the first gameapplication with jurisdictional requirements.
 19. A system for providinggames of chance, the system comprising: a local gaming machineincluding: a storage medium configured to store one or more local gameapplications; a controller configured to: determine a location of afirst game application as being at a remote gaming machine, determinewhether the first game application is available for execution at theremote gaming machine, and reserve an instance of the first gameapplication at the remote gaming machine when it is determined that thefirst game application is available for execution; and the remote gamingmachine including: a storage medium configured to store one or moreremote game applications; a controller configured to: determine alocation of a second game application as being at the local gamingmachine, determine whether the second game application is available forexecution at the local gaming machine, and reserve an instance of thesecond game application at the local gaming machine when it isdetermined that the second game application is available for execution.20. The system of claim 19, wherein the local gaming machine or theremote gaming machine includes is an item selected from the groupconsisting of: a slot machine, a personal digital assistant (PDA), acell phone, and an interactive television enabled device.